﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Data.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Net;
using System.Net.Sockets;

namespace SpaceRivals
{
    public partial class inscription : System.Web.UI.Page
    {
        cGeneric generic = new cGeneric();
        
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void ButtonInscription_Click(object sender, EventArgs e)
        {
            DBSpaceRivalsDataContext DB = new DBSpaceRivalsDataContext();
            var controleLogin = DB.Inscription_EstLoginValide(TextBoxLogin.Text);
            var controleAdresseMail = DB.Inscription_EstAdresseMailValide(TextBoxMail.Text);

            //Initialisation des labels
            MasquerNotificationReussite();
            MasquerMessageErreur();
            
            // Contrôle des champs vides
            if ((TextBoxLogin.Text == "") || (TextBoxPass.Text == "") || (TextBoxConf.Text == "") ||
                (TextBoxMail.Text == "") || (TextBoxPseudo.Text == ""))
                AfficherMesageErreur("Un ou plusieurs champs ne sont pas renseignés");
            else
            {
                // Contrôle de l'existence du Login
                if (controleLogin.Count() == 0)
                {
                    // Controle de la confirmation du mot de passe
                    if (TextBoxPass.Text == TextBoxConf.Text)
                    {
                        // Controle de l'existance de l'adresse Mail
                        if (controleAdresseMail.Count() == 0)
                        {
                            // Création du compte
                            if (CreerJoueur(TextBoxLogin.Text, TextBoxPass.Text, TextBoxMail.Text,
                                             TextBoxPseudo.Text))
                            {
                                NotifierReussite("Votre inscription s'est déroulée correctement !");
                                Response.Write("<a href=" + "connexion.aspx" + ">Se lancer !!</a>");
                            }
                            else { AfficherMesageErreur("La création de votre compte a échoué."); }                          
                        }
                        else { AfficherMesageErreur("Cette adresse mail est déjà utilisée"); }
                    }
                    else { AfficherMesageErreur("Le mot de passe n'est pas confirmé"); }
                }
                else { AfficherMesageErreur("Login existant. Veuillez en choisir un autre"); }
            }             
        }


        protected void AfficherMesageErreur(string uneErreur)
        {
            LabelErreur.Text = uneErreur;
            LabelErreur.Visible = true;
        }

        protected void NotifierReussite(string unMessage)
        {
            LabelMessage.Text = unMessage;
            LabelMessage.Visible = true;
        }

        protected void MasquerMessageErreur()
        {
            LabelErreur.Visible = false;
        }

        protected void MasquerNotificationReussite()
        {
            LabelMessage.Visible = false;
        }

        protected bool CreerJoueur(string unLogin, string unMotDePasse, string uneAdresseMail, string unPseudo)
        {
            DBSpaceRivalsDataContext DB = new DBSpaceRivalsDataContext();

            try 
            {
                TJOUEUR joueur = new TJOUEUR()
                {
                    IDJOUEUR = generic.GenererId(typeof(TJOUEUR)),
                    ADRESSEMAILJOUEUR = uneAdresseMail,
                    COMPTEACTIFJOUEUR = true,
                    DATEINSCRIPTIONJOUEUR = DateTime.Now,
                    LIENAVATARLOCALJOUEUR = "",
                    LIENAVATARWEBJOUEUR = "",
                    PSEUDOJOUEUR = unPseudo,
                    PSEUDOPARRAIN = ""
                };
                TINFOSCONNEXION infosConnexion = new TINFOSCONNEXION()
                {
                    IDINFOSCONNEXION = generic.GenererId(typeof(TINFOSCONNEXION)),
                    IDJOUEUR = joueur.IDJOUEUR,
                    LOGINCONNEXION = unLogin,
                    MOTDEPASSECONNEXION = unMotDePasse,
                    NOMBREDECONNEXION = 0
                };
                TLOCALISATIONSIP localisationIP = new TLOCALISATIONSIP()
                {
                    IDLOCALISATIONIP = generic.GenererId(typeof(TLOCALISATIONSIP)),
                    ADRESSEIP = Request.UserHostAddress,
                    IDINFOSCONNEXION = infosConnexion.IDINFOSCONNEXION,
                    TYPECONNEXION = ""
                };

                DB.TJOUEUR.InsertOnSubmit(joueur);
                DB.TINFOSCONNEXION.InsertOnSubmit(infosConnexion);
                DB.TLOCALISATIONSIP.InsertOnSubmit(localisationIP);
                DB.SubmitChanges();

            }
            catch {return false;}
            return true;
        }
     
    }
}
